// import jsCookie from 'js-cookie'
import { sysProfile, sysUser } from '@/api/user'
import router, { otherRoutes, constantRoutes, resetRouter } from '@/router'
export default {
  namespaced: true,
  state() {
    return {
      // token: jsCookie.get('token') || ''
      token: '',
      test: {
        num: 1
      },
      userInfo: ''
    }
  },
  mutations: {
    SET_TOKEN(state, value) {
      state.token = value
      // jsCookie.set('token', value)
    },
    SET_TEST(state, value) {
      state.test.num = value
    },
    SET_USERINFO(state, value) {
      state.userInfo = value
    },
    LOGOUT(state) {
      state.token = ''
      state.userInfo = ''
      // 重置路由(添加了以前添加的路由)
      resetRouter()
    }
  },
  actions: {
    // 获取用户信息
    async getUserInfo({ commit }) {
      const res = await sysProfile()
      const res2 = await sysUser(res.data.userId)
      const user = { ...res.data, ...res2.data }
      commit('SET_USERINFO', user)
      // 将用户信息中的权限数据与动态路由匹配,将匹配的数据添加到路由中
      // 动态路由:  otherRoutes
      // 用户权限数据:user.roles.menus
      const newArr = otherRoutes.filter(item => {
        return user.roles.menus.includes(item.code)
      })
      newArr.push({ path: '*', redirect: '/404', hidden: true })
      // 添加动态路由匹配的数据到路由中
      router.addRoutes(newArr)
      // addRoutes添加的路由 this.$router.options.routes并不会响应式更新
      // 手动更新this.$router.options.routes
      // this.$router.options.routes=完整的路由配制=静态路由+动态匹配路由
      // addRoutes添加的路由并不能立马使用,需要再经过一次导航守卫
      router.options.routes = [...constantRoutes, ...newArr]
      console.log('newArr', newArr)
    }
  },
  getters: {}

}
